package top.lixunda.demo.seata.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import top.lixunda.demo.seata.common.constant.ServerName;
import top.lixunda.demo.seata.common.controller.MessageObject;
import top.lixunda.demo.seata.common.entity.DbGood;

import java.util.List;

/**
 * @author LiXunda
 * @version time:2019/10/25 11:15
 */
@FeignClient(ServerName.SN_GOOD)
@RequestMapping("/good")
public interface GoodClient {

    /**
     * 根据id获取商品信息，本项目中主要是为了获取单价计算总价格填入订单中
     *
     * @param id 商品id
     * @return 返回MessageObject，返回获取到的商品信息，失败返回null
     */
    @GetMapping("/getGoodById")
    MessageObject<DbGood> getGoodById(@RequestParam("id") int id);

    /**
     * 查询所有商品信息
     *
     * @return MessageObject
     */
    @GetMapping("/queryAll")
    MessageObject<List<DbGood>> queryAll();

    /**
     * 减少商品的库存
     *
     * @param goodId 商品唯一id
     * @param count  商品数量
     * @return 返回是否成功，当库存不足时会减少库存失败
     */
    @GetMapping("/reduceStock")
    MessageObject<Boolean> reduceStock(@RequestParam("goodId") int goodId, @RequestParam("count") int count);

}
